function Person(name) {
  this.name = name;
  this.age = "18";
  this.friends = [];
}
Person.prototype.eating = function () {
  console.log(`${this.name}eating`);
};

function Student(name) {
  this.name = name;
}

Student.prototype = new Person("lisi");

Student.prototype.studying = function () {
  console.log(`${this.name}${this.age}studying`);
};

let zhagnsan = new Student("zhangsan", 18);
zhagnsan.studying();
zhagnsan.eating();

/* ===========================
 * 这里做了什么事情呢
1.let p = new Person（）， 
2. Student的rototype指向了Person的一个实例， 找属性的时候先在 Student的实例中找， 如果没有找到， 就去 Student的prototype中找， 如果还没有找到， 就去 Student的prototype的__proto__中找， 直到找到 Object.prototype 为止
 * =========================== */

//第一个问题， 打印stu， 继承的属性是看不到的
console.log(zhagnsan);

//第二个问题， 创建出来的两个stu对象， 获取引用中的值，会互相影响
let stu1 = new Student("zhangsan");
let stu2 = new Student("lisi");

//直接修改对象上的属性，是给本对象添加了一个新的属性
stu1.age = 20; //赋值操作不会影响，但是get操作是不会有问题的 比如， stu1.friends = 【】
console.log(stu1.age);
console.log(stu2.age);

stu1.friends.push("lisi");
console.log(stu1.friends);
console.log(stu2.friends);

//第三个问题， 本来是要在person中提取公共处理，但是在student中不好处理
